iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
AI & Data

30天了解醫學信號辨識是怎麼回事?系列 第 17

Day- 17深度學習模型介紹-CNN

  • 分享至 

  • xImage
  •  

卷積神經網絡(Convolutional Neural Network,CNN)是一種深度學習模型,專門設計用於處理圖像和影像數據。並被廣泛應用於圖像分類、物體檢測、圖像生成等任務。下面是CNN的主要特點和結構:

主要特點:

  1. 局部感知域(Local Receptive Field):CNN通過卷積操作實現局部感知域,即每個神經元只關注圖像中的一個小區域,這有助於捕捉圖像中的局部特徵
  2. 共享權重和偏置(Shared Weights and Biases):CNN在卷積層中使用共享的權重和偏值,這意味著每個卷積核在整個圖像上都有相同的權重,這有助於減少參數數量並提高模型的效率。
  3. 池化層(Pooling Layer):池化層用於降低特徵圖的維度,通常使用最大池化或平均池化來保留主要特徵並減少計算量。
  4. 深層結構(Deep Architecture):CNN通常由多個卷積層和池化層交替堆疊而成,以捕捉不同層次的特徵,這使得它能夠處理復雜的圖像結構。
  5. 卷積操作和非線性激活(Convolution and Non-linear Activation):卷積操作用於對特徵圖執行卷積運算,然後應用非線性激活函數(如ReLU)來引入非線性性質。

結構:

CNN的典型結構包括以下幾種層:

  1. 輸入層(Input Layer):接受圖像或影像數據。
  2. 卷積層(Convolutional Layer):執行卷積運算,檢測圖像中的特徵。
  3. 激活層(Activation Layer):應用非線性激活函數,如ReLU。
  4. 池化層(Pooling Layer):減小特徵圖的尺寸,保留重要信息。
  5. 全連接層(Fully Connected Layer):將特徵映射到輸出類別,用於分類或回歸任務。
  6. 輸出層(Output Layer):產生模型的輸出,通常使用軟最大值(softmax)函數來計算類別概率。

CNN的訓練過程通常涉及反向傳播算法和梯度下降優化,以調整卷積核的權重和模型的參數,使模型能夠學習有效的特徵表示並進行分類或預測。

這裡使用比較常見的手寫數字分類建立一個卷積神經網絡(CNN)模型程式。以下是一個使用Python和TensorFlow的簡單CNN程式範例,用於圖像分類的情形。在執行範例之前,確保已安裝TensorFlow套件。

import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical

# 載入和預處理數據(這是一個簡單的手寫數字分類示例)
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
train_images = train_images.reshape((60000, 28, 28, 1))
test_images = test_images.reshape((10000, 28, 28, 1))
train_images, test_images = train_images / 255.0, test_images / 255.0
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)

# 創建CNN模型
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))

# 編譯模型
model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

# 訓練模型
model.fit(train_images, train_labels, epochs=5, batch_size=64)

# 評估模型
test_loss, test_acc = model.evaluate(test_images, test_labels)
print(f'Test accuracy: {test_acc}')

# 進行預測
predictions = model.predict(test_images)

CNN在醫學影像分析中的應用包括X光圖像分類、病變檢測、MRI圖像分割、生物醫學信號處理等。


上一篇
Day- 16深度學習在醫學影像和信號分析上的表現。
下一篇
Day- 18深度學習模型介紹-LSTM
系列文
30天了解醫學信號辨識是怎麼回事?30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言